package pres.wchen.bussiness.web;

import org.springframework.web.servlet.ModelAndView;
import pres.wchen.bussiness.cor.model.BaseModel;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 源文件名：BaseController.java
 * 作者：wchen
 * 创建时间：2018/1/13
 * 文件描述：基类controller
 * 版权所有：Copyright 2018, Inc. All Rights Reserved.
 * @修改信息：
 */
public abstract class BaseController {


    /**
     *  @描述: 新增结果处理
     *  @参数： [id]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    public Map dealInsertResult(Long id){
        if(id == null){
            return getFailInfo("操作失败");
        }else{
            Map map = getSuccessInfo();
            map.put("id",id);
            return map;
        }
    }

    /**
     *  @描述: 更新结果处理
     *  @参数： [id]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    public Map dealUpdateResult(Integer result){
        if(result == null || result == 0){
            return getFailInfo("操作失败");
        }else{
            return getSuccessInfo();
        }
    }

    /**
     *  @描述: 删除结果处理
     *  @参数： [id]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    public Map dealDeleteResult(Integer result){
        if(result == null || result == 0){
            return getFailInfo("操作失败");
        }else{
            return getSuccessInfo();
        }
    }

    /**
     *  @描述: 列表结果处理
     *  @参数： [id]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    public Map dealListResult(BaseModel baseModel){
        Map map = getSuccessInfo();
        map.put("listResult", baseModel);
        return map;
    }


    /**
     *  @描述: 详情结果处理
     *  @参数： [id]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    public Map dealInfoResult(Object object){
        Map map = getSuccessInfo();
        map.put("result", object);
        return map;
    }



    /**
     *  @描述: 列表结果处理（ModelAndView）
     *  @参数： [id]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    public ModelAndView dealListResult(String viewName, BaseModel baseModel){
        Map map = getSuccessInfo();
        map.put("listResult", baseModel);
        return new ModelAndView(viewName, map);
    }


    /**
     *  @描述: 列表结果处理（ModelAndView）
     *  @参数： [id]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    public ModelAndView dealListResult(String viewName, List<Map> dataList){
        Map map = getSuccessInfo();
        map.put("listResult", dataList);
        return new ModelAndView(viewName, map);
    }


    /**
     *  @描述: 详情结果处理（ModelAndView）
     *  @参数： [id]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    public ModelAndView dealInfoResult(String viewName, Object object){
        Map map = getSuccessInfo();
        map.put("result", object);
        return new ModelAndView(viewName, map);
    }




    /**
     *  @描述: 通用失败
     *  @参数： [id]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    public Map commonFailResult(String msg){
        return getFailInfo(msg);
    }

    /**
     *  @描述: 通用成功
     *  @参数： [id]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    public Map commonSuccessResult(Object object, String paramName){
        Map map = getSuccessInfo();
        map.put(paramName, object);
        return map;
    }

    /**
     *  @描述: 通用成功
     *  @参数： [id]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    public Map commonSuccessResult(){
        Map map = getSuccessInfo();
        return map;
    }

    /**
     *  @描述: 返回成功结果
     *  @参数： []
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    private Map getSuccessInfo(){

        Map map = new HashMap();
        map.put("msg","操作成功");
        map.put("code",0);
        return map;
    }

    /**
     *  @描述: 返回失败结果
     *  @参数： [error]
     *  @返回值： java.util.Map
     *  @创建人: wchen
     *  @创建时间: 2018/1/13
     *  @修改人和其它信息:
     */
    private Map getFailInfo(String error){

        Map map = new HashMap();
        map.put("msg",error);
        map.put("code",1);
        return map;
    }
}
